/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package me.yobol.algorithm.basic.string;

/**
 * 请实现一个函数，将一个字符串中的空格替换成“％20”。
 * 例如，当字符串为We Are Happy。则经过替换之后的字符串为We％20Are％20Happy。
 * 
 * 可选用的方法：
 * 1.从前向后
 * 2.从后向前
 * @author Yobol
 */
public class ReplaceSpace {
    
    /**
     * 从前向后，在原有的字符串上做替换
     *      过多地使用了Java的库函数
     *      重复移动字符位置，效率较低
     * 
     * @param str
     * @return 
     */
    public static String replaceSpaceFromFront(StringBuffer str){
        String spaceTag = "%20";
        int spaceTagLength = spaceTag.length();
        for(int i = 0;i < str.length();i++){
            if (str.charAt(i) == ' ') {
                str.replace(i, i + 1, spaceTag);
                i += (spaceTagLength - 1);
            }
        }
        System.out.println("length : " + str.length());
        return str.toString();
    }
    
    /**
     * 从后向前
     * 
     * @param str
     * @return 
     */
    public static String replaceSpaceFromBehind(StringBuffer str){
        int strLength = str.length();
        String spaceTag = "%20";
        int spaceTagLength = spaceTag.length();
        for (int i = strLength - 1; i >= 0; i--) {
            if (str.charAt(i) == ' ') {
                str.replace(i, i + 1, spaceTag);
            }
        }
        return str.toString();
    }
    
    public static void main(String[] args) {
        System.out.println(replaceSpaceFromBehind(new StringBuffer("We Are  Happy!")));
    }
}
